CentOS7の最新AMI IDをAWS CLIで取得する方法
CentOS7の最新AMI IDを調べようと思っても意外と見つからない、という経験はありませんか?自分はあります。CentOSの最新AMI IDを取得する方法を調べたのでご紹介したいと思います。
最新AMI IDの取得方法
上記が公式のWikiですが、メンテされていないようで最新のAMI IDの記載がありませんでした。しかし、AWS CLIで検索する際にヒントとなる情報がありました。product-code
をfilter条件に入れることで公式のAMIだけを抽出できるようです。各OSのProduct Codeは下記になります。
OS | Product Code |
---|---|
CentOS-7 x86_64 | aw0evgkw8e5c1q413zgy5pjce |
CentOS-6 x86_64 | 6x5jmcajty9edm3f211pqjfn2 |
Wikiで紹介されているのが、CentOS7のAMIを検索する方法です。
$ aws --region us-east-1 ec2 describe-images --owners aws-marketplace --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce
これに条件を加えて最新のAMI IDを取得できるようにします。 コマンドは下記になります。
--filters
でproduce-code
を指定し、公式のCentOS7に絞り込みます。そして—query
でCreationDate
でソートします。ソートは昇順になっているのでreverse
で降順にし、1件目だけを表示しています。
・CentOS7の最新AMI IDを取得
$ aws ec2 describe-images \ --owners aws-marketplace \ --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce \ --region ap-northeast-1 \ --query 'reverse(sort_by(Images, &CreationDate))[0].[ImageId]' \ --region ap-northeast-1 \ --output text ami-045f38c93733dd48d
AMI IDが1件表示されていますが、それが最新かどうか表示項目と件数を増やして確認してみたいと思います。
・確認コマンド
$ aws ec2 describe-images \ --owners aws-marketplace \ --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce \ --query 'reverse(sort_by(Images, &CreationDate))[:5].[CreationDate, Description, ImageId]' \ --region ap-northeast-1 \ --output text 2019-01-30T23:44:22.000Z CentOS Linux 7 x86_64 HVM EBS ENA 1901_01 ami-045f38c93733dd48d 2018-06-13T15:58:01.000Z CentOS Linux 7 x86_64 HVM EBS ENA 1805_01 ami-8e8847f1 2018-05-17T09:05:19.000Z CentOS Linux 7 x86_64 HVM EBS ENA 1804_2 ami-3185744e 2018-04-04T00:13:11.000Z CentOS Linux 7 x86_64 HVM EBS ENA 1803_01 ami-91c4d3ed 2017-12-05T14:49:37.000Z CentOS Linux 7 x86_64 HVM EBS 1708_11.01 ami-4dd5522b
最新AMI IDが取得できていることが検証できました。同じ要領でCentOS6もproduct-code
を変更すれば取得できます。
CentOS7を最新のAMIで起動してみる
先程のコマンドを使用して常に最新のAMI IDからEC2インスタンスを起動してみたいと思います。
$ aws ec2 run-instances \ --image-id $(aws ec2 describe-images --owners aws-marketplace --filters Name=product-code,Values=aw0evgkw8e5c1q413zgy5pjce --region ap-northeast-1 --query 'reverse(sort_by(Images, &CreationDate))[0].[ImageId]' --region ap-northeast-1 --output text) \ --instance-type t2.micro
上記のコマンド実行後、マネジメントコンソールから起動できていることが確認できました。また意図したAMIが使用されていることも確認できました。
以上